package com.kk.不要使用for循环删除List;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * the class of Plan1ThreadsAndJUC
 *
 * <p>
 * .
 *
 * @author little_lunatic
 * @date 2023-03-07
 */
public class Demo {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>(4);
        list.add("a");
        list.add("ab");
        list.add("abc");
        list.add("abcd");

        // 推荐的
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            if (iterator.next().contains("a")) {
                // 删除元素
                iterator.remove();
            }
        }
        System.out.println(list);

        // 错误写法，从前、中往后删除会导致元素向前移动位置
        List<String> list1 = new ArrayList<>(4);
        list1.add("a");
        list1.add("ab");
        list1.add("abc");
        list1.add("abcd");
        for (int i = 0; i < list1.size(); i++) {
            if (list1.get(i).contains("a")) {
                list1.remove(i);
            }
        }
        System.out.println(list1);

        // 错误写法，从前、中往后删除会导致元素向前移动位置
        List<String> list2 = new ArrayList<>(4);
        list2.add("a");
        list2.add("ab");
        list2.add("abc");
        list2.add("abcd");
        for (String str : list2) {
            if (str.contains("ab")) {
                list2.remove(str);
            }
        }
        System.out.println(list2);


    }
}
